#ifndef SERVER_H
#define SERVER_H
#include <QTcpServer>
#include <QTcpSocket>
#include <QDataStream>
#include <QNetworkInterface>

/*! Класс Server - серверная часть для генерации записей исходной сигнальной информации

    пока нет такого - Класс Server имитирует смежное изделие и генерирует новую запись исходной сигнальной информации (ИСИ)
    Сервер работает с несколькими клиентами. Если клиент отключается, сервер удаляет его из списка подключений


*/

class Server : public QTcpServer
{
    Q_OBJECT
public:
    Server();
    ~Server();
    //QTcpSocket * m_socket;              ///< сокет TCP для передачи данных по протоколу

private:
    QList<QTcpSocket*>   m_sockets;     ///< вектор для хранения всех новых сокетов для подключений сервера к клиентам
    QByteArray           m_data;        ///< данные для передачи одной записи ИСИ от клиента к серверу
    quint16              m_nextMsgSize; ///< размер присланного от клиента сообщения

    /*! Передает запись ИСИ от сервера к клиенту
     * \param message - сообщение для отправки
    */
    void sendToClient(QString message);


    public slots:
    /*! Слот сервера, когда приходит соединение от клиета (становится доступным новое подключение к клиенту)
    \param socketDescriptor - дестриптор */
    void incomingConnection(qintptr socketDescriptor);
    /*! Слот обработки полученных от клиента сообщений */
    void slotReadyRead();
    /*! Cлот при отключении сокета клиента от сервера*/
    void slotDisconnectSocket();
};

#endif // SERVER_H
